//
//  MFAPMUploadManager.h
//  MFAPMManager
//
//  Created by zhang liyu on 2019/6/3.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@class MFAPMBaseModel;
@interface MFAPMUploadManager : NSObject

/**
 保存内存中事件到数据库，包括内存缓存事件及待上传事件
 */
+ (void)storeCacheItemsToDiskNow;


/**
 事件统计函数，等待上传触发条件
 
 @param item 要统计的事件对象
 */
+ (void)cacheItem:(MFAPMBaseModel *)item;

/**
 事件统计函数
 
 @param item 要统计的事件对象，当要立即写入数据库时，事件本身可为空
 @param isStoreToDiskNow 是否需要立即保存数据到磁盘即数据库
                         默认为NO, 等待上传触发条件
                         当为YES时，一般是异常事件统计，会将内存中未上传和待上传的事件排序合并后写入数据库
 */
+ (void)cacheItem:(nullable MFAPMBaseModel *)item AndStoreToDiskNow:(BOOL)isStoreToDiskNow;

/**
 上传缓存的事件，包括数据库和内存中事件，数据库事件顺序在内存事件之前
 */
+ (void)uploadCacheDataNow;

/**
 上传缓存的事件，包括数据库和内存中事件，数据库事件顺序在内存事件之前
 
 @param item 需要一同上传的事件
 */
+ (void)uploadCacheDataNowWithItem:(nullable MFAPMBaseModel *)item;



@end

NS_ASSUME_NONNULL_END
